package com.smforj.ssm.modules.lib.service;

import java.util.List;

import com.smforj.ssm.modules.lib.domain.CheckInResponse;
import com.smforj.ssm.modules.lib.domain.CheckOutResponse;
import com.smforj.ssm.modules.lib.domain.EditingRequest;
import com.smforj.ssm.modules.lib.domain.FeePaidResponse;
import com.smforj.ssm.modules.lib.domain.ItemResponse;
import com.smforj.ssm.modules.lib.domain.LibraryRequest;
import com.smforj.ssm.modules.lib.domain.PatronResponse;
import com.smforj.ssm.modules.lib.domain.RFIDRequest;
import com.smforj.ssm.modules.lib.domain.SysReader;
import com.smforj.ssm.modules.lib.domain.Tag;
import com.smforj.ssm.modules.sys.domain.SysUser;
 


/***
 * 图书借还业务Service处理对象
 * 不同图书管理员可以分别编写实现类
 * 
 * 修改service方法名称，为配合事务管理,所有需要事务的方法以do开头
 * 
 * @author Haijun Gao 
 * @date 2016-8-3 下午2:19:21
 * @desp http://www.cnblogs.com/saga5998/
 * @email 573107773@qq.com
 */
public interface SimpleLibraryService {
	 
	/****
	 * 检测网络等相关信息
	 * @param id
	 * @return
	 * @date 2017-8-11 下午12:57:54
	 */
	public String testStatus(String id);
	/***
	 * 登陆 图书管理系统
	 * @param request 请求信息 读者信息 
	 * @return 成功 message 为 User 失败 message 为 error message
	 * @date 2016-8-3 下午2:24:56
	 */
	public PatronResponse doLogin(LibraryRequest<String> request);
	/***
	 * 查询读者信息 图书管理系统
	 * @param request 请求信息 读者信息 
	 * @return 成功 message 为 User 失败 message 为 error message
	 * @date 2016-8-3 下午2:24:56
	 */
	public PatronResponse getReader(LibraryRequest<String> request);
	
	/***
	 * 借阅图书
	 * @param request 请求信息 包含图书信息，读者信息 
	 *   必须字段 readerid,bookid
	 *   可行字段 pwd
	 * @return 成功 message 为 更新后的book 失败 message 为 error message
	 * @date 2016-8-3 下午3:01:16
	 */
	public List<CheckOutResponse> doCheckout(LibraryRequest<String[]> request);
	
	
	/***
	 * 归还图书
	 * @param request 请求信息 包含图书信息，读者信息 
	 * @return 成功 message 为 更新后的book 失败 message 为 error message
	 * @date 2016-8-3 下午3:01:16
	 */
	public List<CheckInResponse> doCheckin(LibraryRequest<String[]> request);
	
	
	/***
	 * 续借图书
	 * @param request 请求信息 包含图书信息，读者信息 
	 * @return 成功 message 为 更新后的book 失败 message 为 error message
	 * @date 2016-8-3 下午3:01:16
	 */
	public List<CheckOutResponse> doRenew(LibraryRequest<String[]> request);

	/***
	 * 查询图书信息
	 * @param request 请求信息 包含图书id或Barcode
	 * @return 成功 message 为 图书信息 失败 message 为 error message
	 * @date 2016-11-1 下午3:22:27
	 */
	public ItemResponse getBookInfo(LibraryRequest<String> request);
	
	/***
	 * 检测图书是否借还
	 * @param request
	 * @return
	 * @date 2017-8-11 下午4:04:36
	 */
	public List<ItemResponse> checkBookStatus(LibraryRequest<String[]> request);  
	
	/***
	 * 检测图书是否借还(使用于防盗门)
	 * @param request
	 * @return
	 * @date 2017-8-11 下午4:04:36
	 */
	public List<Tag> cBookStatus(RFIDRequest request);  
	
	/***
	 * 交罚款
	 * @param request
	 * @return
	 * @date 2017-8-11 下午4:04:36
	 */
	public FeePaidResponse doPayFee(LibraryRequest<String> request); 
	 
}
